package main

import (
	"errors"
	"fmt"
)

// nil error != nil

type MyError struct {
	error
}

var ErrBad = MyError{
	error: errors.New("bad things happened"),
}

func bad() bool {
	return false
}

func returnErrors() error {
	var p *MyError = nil
	if bad() {
		p = &ErrBad
		return p
	}

	return p
}

func main() {
	err := returnErrors()

	println(err) // (0xbe86d8,0x0)

	if err != nil { // 匹配到该控制流，因为 err 是 error 接口类型的变量，其中 data 是 nil，但是 _type 不是 nil
		fmt.Printf("error occur:%+v\n", err)
		return
	}

	fmt.Println("ok")

}
